1 package tw.com.javaworld.CH15;
2
3 import javax.servlet.*;
4 import javax.servlet.jsp.*;
5 import javax.servlet.jsp.tagext.*;
6
7 public class Filter extends BodyTagSupport {
8
9 public Filter() {
10 }
11
12 public int doAfterBody() {
13
14 BodyContent bc = getBodyContent();
16
17 ServletRequest request = pageContext.getRequest();
19
20
23 String filter;
24
25 if (request.getParameter("Filter") != null
26 && request.getParameter("Filter").equals("Filter")) {
27
28 filter = toFilter(bc.getString());
29 } else {
30 filter = bc.getString();
31 }
32 try {
33 JspWriter out = bc.getEnclosingWriter();
34 out.print(filter);
35 } catch (Exception e) {
36 System.out.println("Error in FilterTag: " + e);
37 }
38 return (SKIP_BODY);
39 }
40
41 public String toFilter(String input) {
44 StringBuffer filtered = new StringBuffer(input.length());
45 char c;
46 for (int i = 0; i < input.length(); i++) {
47 c = input.charAt(i);
48 if (c == '<') {
49 filtered.append("<");
50 } else if (c == '>') {
51 filtered.append(">");
52 } else if (c == '"') {
53 filtered.append(""");
54 } else if (c == '&') {
55 filtered.append("&");
56 } else {
57 filtered.append(c);
58 }
59 }
60 return (filtered.toString());
61 }
62}